<!DOCTYPE html>
<html lang="en" dir="ltr">

<head>
  <meta charset="utf-8">
  <title></title>
  <script src="./lib/vue.js"></script>
  <style>
    .ball {
        width: 15px;
        height: 15px;
        border-radius: 50px;
        background-color: red;
      }
    </style>
</head>

<body>
  <div id="app">
    <input type="button" value="快到碗里来" @click="flag=!flag">
    <transition @before-enter="beforeEnter" @enter="enter" @after-enter="afterEnter">
      <div class="ball" v-show="flag"></div>
    </transition>
  </div>

  <script>
    var vm = new Vue({
      el: '#app',
      data: {
        flag: false
      },
      methods: {
        // 动画钩子函数的第一个参数: el 表示 要执行动画的那个dom元素,是原生的dom对象
        beforeEnter(el){
          // beforeEnter 表示动画入场之前,动画尚未开始,可以设置元素开始动画之前的起始样式
          // 设置小球开始动画之前的起始位置
          el.style.transform = "translate(0,0)"
        },
        enter(el,done){
          // 过度效果(i强制动画刷新)
          el.offsetWidth
          // enter表示动画开始之后的样式,这里可以设置小球完成动画之后的结束状态
          el.style.transform = "translate(150px,450px)"
          el.style.transition = 'all 1s ease'
          // 这里的done, 实际就是afterEnter函数,也就是说done是afterEnter的引用
          done()
        },
        afterEnter(el){
          console.log("asasa");
          // 动画完成之后会调用afterEnter
          this.flag = !this.flag
        }
      }
    });
  </script>



</body>

</html>
